Memory compression may optimize available memory by using encoded data. The encoded data may be represented as symbols to take up less space. Memory compression effectively expands memory capacity for some applications without increasing actual physical memory (e.g., dynamic random access memory) and associated expenses. In so doing, a compressed memory system may present a larger real address space to an operating system and/or a hypervisor than is actually available. As a result, real address space (e.g., the amount of available physical memory reported to the OS and/or hypervisor) may be overcommitted. Additionally, the compression ratio may decrease and require more physical memory. The operating system or hypervisor may respond by invalidating real pages to free up physical memory space. The invalidated real pages may be copied to disk and vacated to make room for the compressed data.
Occasionally, physical memory space will not be made available in time to prevent memory exhaustion and associated data loss. For example, processes to vacate memory may be delayed while the system continues to consume additional memory. Additionally, processes unaffected by the operating system or hypervisor may continue to use available memory. Memory consumption may consequently outpace the rate at which space is made available. Precautionary attempts to reserve significant amounts of free physical memory may result in underutilized memory.